home *** CD-ROM | disk | FTP | other *** search
/ Aminet 33 / Aminet 33 - October 1999.iso / Aminet / util / misc / FastFontList.lha / Source / FastFontList.a < prev    next >
Encoding:
Text File  |  1999-03-23  |  3.4 KB  |  219 lines

  1.  
  2. ;    INCLUDE MMacros
  3. ;    INCLUDE diskfont/diskfont.i
  4.  
  5. MAIN:
  6.     MOVEQ #0,D5
  7.    MOVE.L 4,A6       ;A6=EXEC
  8.    MOVE.L D5,A1      ;CLEAR A1
  9.    CALL FindTask
  10.    MOVE.L D0,A5      ;A5=PTR TO OUR PROCESS
  11.    TST.L pr_CLI(A5)
  12.    BNE.S DOLIBS
  13. FROMWB:
  14.    LEA pr_MsgPort(A5),A0
  15.    CALL WaitPort
  16.    LEA pr_MsgPort(A5),A0
  17.    CALL GetMsg
  18.    MOVE.L D0,D5
  19. DOLIBS:
  20.    MOVEQ #0,D0
  21.    LEA FONT(PC),A1
  22.    CALL OpenLibrary
  23.    MOVE.L D0,D6
  24.    BEQ.S NOFONT
  25.  
  26.    LEA AVAILFONTS2(PC),A0
  27.    MOVE.L A0,D0
  28.    MOVE.L D6,A1
  29.    MOVE.W #-36,A0
  30.    CALL SetFunction
  31.    LEA OLDAVAILFONTS,A5
  32.    MOVE.L D0,(A5)
  33.  
  34.    MOVE.L #SIGBREAKF_CTRL_C|SIGBREAKF_CTRL_F,D0
  35.    CALL Wait
  36.  
  37.    MOVE.L (A5),D0
  38.    MOVE.L D6,A1
  39.    MOVE.W #-36,A0
  40.    CALL SetFunction
  41.  
  42.    MOVE.L D6,A1
  43.    CALL CloseLibrary
  44. NOFONT:
  45.    TST.L D5
  46.    BEQ.S NOWB
  47.    CALL Forbid
  48.    MOVE.L D5,A1      ;A1= ->WBSTARTUP MESSAGE
  49.    CALL ReplyMsg
  50.  NOWB:
  51.    MOVEQ #0,D0
  52.    RTS
  53.  
  54.     CNOP 0,4          ;LONG ALIGNES OLDWAY
  55. NOFILE:
  56.    MOVE.L A6,A1
  57.    MOVE.L D6,A6
  58.    CALL CloseLibrary
  59. NODOS:
  60.    MOVE.L D5,D1
  61.    MOVE.L D4,D0
  62.    MOVE.L A4,A0
  63.    MOVEM.L (SP)+,A4-A6/D2-D7
  64.    ADDQ.B #AFF_DISK,D1
  65. OLDWAY:
  66.    MOVE.L OLDAVAILFONTS,A1
  67.    JMP (A1)
  68.  
  69.     CNOP 0,4
  70. AVAILFONTS2:
  71.    CMP.L #7,D1       ;6 14
  72.    BGT.S OLDWAY
  73.    BCLR #AFB_DISK,D1 ;4 10
  74.    BEQ.S OLDWAY
  75.  
  76.    MOVEM.L A4-A6/D2-D7,-(SP)
  77.    MOVE.L D1,D5   ; flags
  78.    MOVE.L D0,D4   ; bufBytes
  79.    MOVE.L A0,A4   ; buffer
  80.    MOVE.L A6,A5   ; DiskfontBase
  81.  
  82.    MOVE.L 4,A6
  83.  
  84.    MOVEQ #0,D0
  85.    LEA DOS(PC),A1
  86.    CALL OpenLibrary
  87.    MOVE.L D0,D6
  88.    BEQ.S NODOS
  89.    EXG A6,D6
  90.  
  91.    LEA FILENAME(PC),A1
  92.    MOVE.L A1,D1
  93.    MOVE.L #MODE_OLDFILE,D2
  94.    CALL Open
  95.    MOVE.L D0,D7
  96.    BEQ.S NOFILE
  97.  
  98.    LEA -4(SP),SP
  99.    MOVEQ #4,D3
  100.    MOVE.L SP,D2
  101.    MOVE.L D7,D1
  102.    CALL Read
  103.  
  104.    MOVE.L (SP)+,D3
  105.    BTST #AFB_MEMORY,D5
  106.    BNE.S DOMEMFONTS
  107.    SUB.L D3,D4
  108.    BLT.S BUFFERTOOSMALL
  109.    MOVE.L A4,D2
  110.    MOVE.L D7,D1
  111.    CALL Read
  112.  
  113.    MOVE.W (A4)+,D1      ;NUMBER OF AvailFonts
  114.    BRA.S SKIP1STLOOP
  115. LOOP:
  116.    ADDQ.L #af_Attr+ta_Name,A4
  117.    ADD.L D2,(A4)+
  118.    ADDQ.L #ta_SIZEOF-ta_YSize,A4
  119. SKIP1STLOOP:
  120.    DBRA.S D1,LOOP
  121.  
  122.    MOVE.L D7,D1
  123.    CALL Close
  124.  
  125.    MOVE.L A6,A1
  126.    MOVE.L D6,A6
  127.    CALL CloseLibrary
  128.  
  129.    MOVEM.L (SP)+,A4-A6/D2-D7
  130.    MOVEQ #0,D0
  131.    RTS
  132.  
  133. BUFFERTOOSMALL2:
  134.    MOVE.L A5,A6
  135. BUFFERTOOSMALL:
  136.    MOVE.L D7,D1
  137.    CALL Close
  138.  
  139.    MOVE.L A6,A1
  140.    MOVE.L D6,A6
  141.    CALL CloseLibrary
  142.  
  143.    NEG.L D4
  144.    MOVE.L D4,D0
  145.    MOVEM.L (SP)+,A4-A6/D2-D7
  146.    RTS
  147.  
  148.     CNOP 0,4
  149. DOMEMFONTS:
  150.    EXG A6,A5
  151.    SUBQ.L #2,D3
  152. TRYAGAIN:
  153.    MOVE.L D5,D1
  154.    MOVEQ #0,D0
  155.    MOVE.L SP,A0
  156.    MOVE.L OLDAVAILFONTS,A1
  157.    JSR (A1)
  158.    MOVE.L D0,D1
  159.    ADD.L D3,D1
  160.    SUB.L D1,D4
  161.    BLT.S BUFFERTOOSMALL2
  162.    ADD.L D1,D4
  163.    MOVE.L D5,D1
  164.    MOVE.L A4,A0
  165.    ADD.L D3,A0
  166.    MOVE.L OLDAVAILFONTS,A1
  167.    JSR (A1)
  168.    TST.L D0
  169.    BNE.S TRYAGAIN
  170.    MOVE.L A5,A6
  171.    MOVE.L A4,A5
  172.    MOVE.L A4,A0
  173.    ADD.L D3,A0
  174.    MOVE.W (A0)+,D1
  175.    MOVE.W D1,(A4)+
  176.    BRA.S SKIP1STLOOP2
  177.     CNOP 0,4
  178.  MOVEAF:
  179.    MOVE.L (A0)+,(A4)+
  180.    MOVE.L (A0)+,(A4)+
  181.    MOVE.W (A0)+,(A4)+
  182.  SKIP1STLOOP2:
  183.    DBRA.S D1,MOVEAF
  184.  
  185.    MOVE.L D3,D5
  186.    MOVEQ #2,D3
  187.    MOVE.L A4,D2
  188.    MOVE.L D7,D1
  189.    CALL Read
  190.  
  191.    MOVE.W (A4),D4
  192.    ADD.W D4,(A5)
  193.  
  194.    MOVE.L D5,D3
  195.    MOVE.L A4,D2
  196.    MOVE.L D7,D1
  197.    CALL Read
  198.  
  199.    MOVE.L A4,D2
  200.    MOVE.W D4,D1
  201.    SUBQ.L #2,D2
  202.    BRA SKIP1STLOOP
  203.  
  204.          CNOP 0,4
  205. FILENAME:
  206.    DC.B 'FONTS:_FontList',0
  207.          CNOP 0,4
  208. DOS:
  209.    DC.B 'dos.library',0
  210.          CNOP 0,4
  211. FONT:
  212.    DC.B 'diskfont.library',0
  213. VERSION:
  214.    DC.B '$VER: FastFontList 1.1 (23.03.99)',0
  215.  
  216.       SECTION bss,BSS
  217. OLDAVAILFONTS:
  218.    DS.L 1
  219.